
create procedure MY_RAISE (My_Emp_No IN NUMBER, Raise IN NUMBER)
as begin
      update EMPLOYEE
         set Salary = Salary+Raise
       where Empno = My_Emp_No;
end;

alter procedure MY_RAISE compile;

create index CITY_ST_ZIP_NDX
on EMPLOYEE(City, State, Zip)
tablespace INDEXES;

select * from EMPLOYEE
 where State='NJ';

select * 
  from EMPLOYEE
 where Empno between 1 AND 100;

create or replace view EMPLOYEE_VIEW
select Empo,
       Name,
       Address,
       City,
       State,
       Zip,
       RowNum
 from COMPANY
group by Empno,
       Name,
       Address,
       City,
       State,
       Zip,
       RowNum;

Create table EMPLOYEE_ORDERED
     as select * from EMPLOYEE_VIEW

select * from EMPLOYEE
 where UPPER (Name) = 'JONES';

select * from EMPLOYEE
 where Name = 'JONES';

Create index EMP_UPPER_NAME on 
EMPLOYEE(UPPER(Name));

explain plan
set Statement_Id = 'TEST'
for
select * from EMPLOYEE
where City > 'Y%';

select
  LPAD(' ',2*Level)||Operation||' '||Options||' '||Object_Name
   Q_Plan
  from PLAN_TABLE
 where Statement_Id = 'TEST'
connect by prior ID = Parent_ID and Statement_ID = 'TEST'
 start with ID=0 and Statement_ID = 'TEST'

alter procedure APPOWNER.ADD_CLIENT compile;
execute DBMS_SHARED_POOL.KEEP('APPOWNER.ADD_CLIENT','P');

analyze table COMPANY compute statistics;

analyze table COMPANY compute statistics for table 
    for indexed columns;

execute DBMS_UTILITY.ANALYZE_SCHEMA('APPOWNER','COMPUTE');

analyze table TAB1 partition (PART1) compute statistics;

select
      Tablespace_Name,   /*Nazwa przestrzeni tabel*/
      Owner,             /*Waciciel segmentu*/
      Segment_Name,      /*Nazwa segmentu*/
      Segment_Type,      /*Typ segmentu (np. TABLE, INDEX)*/
      Extents,           /*Liczba obszarw w segmencie*/
      Blocks,            /*Liczba blokw bazy danych w segmencie*/
      Bytes              /*Liczba bajtw w segmencie*/
from DBA_SEGMENTS
/

select
      Tablespace_Name,   /*Nazwa przestrzeni tabel*/
      Owner,             /*Waciciel segmentu*/
      Segment_Name,      /*Nazwa segmentu*/
      Segment_Type,      /*Typ segmentu (np TABLE, INDEX)*/
      Extent_ID,         /*Numer obszaru w segmencie*/
      Block_ID,          /*Pocztkowy numer bloku obszaru*/
      Bytes,             /*Rozmiar obszaru, w bajtach*/
      Blocks             /*Rozmiar obszaru, w blokach Oracle*/
 from DBA_EXTENTS
where Segment_Name = 'segment_name'
order by Extent_ID;

exp system/manager file=exp.dmp compress=Y grants=Y indexes=Y
     tables=(HR.T1,HR.T2)

imp system/manager file=exp.dmp commit=Y buffer=64000 full=Y

rem                
rem  plik: fsfi.sql
rem
rem  Ten skrypt mierzy fragmentacj wolnej przestrzeni 
rem  we wszystkich przestrzeniach tabel w bazie danych oraz notuje  
rem  je wedug wybranego arbitralnie wskanika dla porwnania 
rem 
set newpage 0 pagesize 60
column fsfi format 999.99

select
      Tablespace_Name,
      SQRT(MAX(Blocks)/SUM(Blocks))*
      (100/SQRT(SQRT(COUNT(Blocks)))) Fsfi
from DBA_FREE_SPACE
group by
      Tablespace_Name
order by 1

spool fsfi.lis
/
spool off

rem
rem   plik: mapper.sql
rem   Parametry: nazwa odwzorowywanej przestrzeni tabel 
rem
rem   Przykadowe wywoanie:
rem   @mapper DEMODATA
rem
rem   Ten skrypt generuje odwzorowanie wykorzystania przestrzeni 
rem   (przestrze wolna a zajmowana) w przestrzeni tabel. 
rem   Ten skrypt przedstawia graficznie segment oraz fragmentacj
rem   wolnej przestrzeni.
set pagesize 60 linesize 132 verify off
column file_id heading "File|Id"

select
      'free space' Owner,    /*"waciciel" wolnej przestrzeni*/
      '   ' Object,          /*nazwa pustego obiektu*/
      File_ID,               /* Identyfikator pliku nagwka obszaru*/
      Block_ID,              /* Identyfikator bloku nagwka obszaru*/
      Blocks                 /*wielko obszaru, w blokach*/
 from DBA_FREE_SPACE
where Tablespace_Name = UPPER('&&1')
union
select
      SUBSTR(Owner,1,20), /*nazwa waciciela (pierwszych 20 znakw)*/
      SUBSTR(Segment_Name,1,32),  /*nazwa segmentu*/
      File_ID,                /*Identyfikator pliku nagwka obszaru*/
      Block_ID,               /*Identyfikator bloku nagwka obszaru*/
      Blocks                  /*wielko obszaru, w blokach*/
 from DBA_EXTENTS
where Tablespace_Name = UPPER('&&1')
order by 3,4

spool &&1._map.lst
/
spool off
undefine 1

alter tablespace DEMONDX
default storage (pctincrease 1);

alter tablespace DEMONDX coalesce;

analyze table TABLE_NAME list chained rows into CHAINED_ROWS;

select
       Owner_Name,      /*Waciciel segmentu danych*/
       Table_Name,      /*Nazwa tabeli z wierszami rozdzielonymi*/
       Cluster_Name, /*Nazwa klastra, jeeli tabela jest klastrowana*/
       Head_RowID   /*Identyfikator wiersza pierwszej czci wiersza*/
from CHAINED_ROWS;

alter table EMPLOYEE_IOT
 move tablespace DATA
overflow tablespace DATA_OVERFLOW;

Sqlload USERID=ME/PASS=ME/PASS CONTROL=PART1.CTL DIRECT=TRUE PARALLEL=TRUE
Sqlload USERID=ME/PASS=ME/PASS CONTROL=PART2.CTL DIRECT=TRUE PARALLEL=TRUE
Sqlload USERID=ME/PASS=ME/PASS CONTROL=PART3.CTL DIRECT=TRUE PARALLEL=TRUE

truncate table EMPLOYEE drop storage;

truncate cluster EMP_DEPT reuse storage;

Alter table EMPLOYEE
Truncate partition PART3
Drop storage;


set copycommit 1
set arraysize 1000
copy from HR/PUFFINSTUFF@loc -
create EMPLOYEE -
using -
select * from EMPLOYEE -
where State = 'NM'

create database link HR_LINK
connect to HR identified by PUFFINSTUFF
using 'loc'; 

select * from EMPLOYEE@HR_LINK;

select DEPT, MAX(Salary)
 from EMPLOYEE@HR_LINK 
group by DEPT;


create snapshot LOCAL_EMP
pctfree 5
tablespace data_2
storage (initial 100K next 100K pctincrease 0)
refresh fast
      start with SysDate
      next SysDate+7
as select * from EMPLOYEE@HR_LINK;

create snapshot log on EMPLOYEE
tablespace DATA
storage (initial 10K next 10K pctincrease 0);

create procedure MY_RAISE (My_Emp_No IN NUMBER, Raise IN NUMBER)
as begin
      update EMPLOYEE@HR_LINK
      set Salary = Salary+Raise
      where Empno = My_Emp_No;
end;
/

execute MY_RAISE@HR_LINK(1234,2000);

create synonym MY_RAISE for MY_RAISE@HR_LINK;

